#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   fanyi.py
@Time    :   2021-11-05 14:28:40
@Author  :   GuoLiuFang
@Version :   0.1
@Contact :   909104374@qq.com
@License :   (C)Copyright 2018-2021, RandomMatrix
@Desc    :   None
'''
import logging
file_handler = logging.FileHandler(filename='log.log')
stdout_handler = logging.StreamHandler()
logging.basicConfig(
    level=logging.DEBUG,
    handlers=[file_handler, stdout_handler],
    format='%(asctime)s - %(processName)s - %(name)s - %(relativeCreated)d - %(threadName)s - %(levelname)s -- %(message)s'
)

# import other libs
"""
Transformer 是论文《Attention is All You Need》中提出的，一种全新的网络结构。
KeyPoint：其完全使用注意力（Attention）机制，来，实现，序列到序列的建模。
"""
"""
Seq2Seq模型中，广泛使用的循环神经网络（Recurrent Neural Network, RNN）使用self Attention
1、计算复杂度小
    特征维度d、序列长度n；
        ～ 在Seq2Seq中，n个时间步，每个时间步，计算d维的【矩阵向量乘法】；为（n * d * d）
        ～ 在SelfAttention中，n个时间步之间两两计算d维度向量的【点积】或其他相关度函数；为（n * n * d)
2、计算并行度高
    RNN有依赖；
    Self-Attention无依赖。
3、容易学习长距离依赖（long-range dependencies）
    RNN中相距为n的两个位置间的关联，需要n步才能建立；
    Self-Attention中任何两个位置之间都是直接相联的。
"""
